package com.newland.mesdk.demo.interfaceimpl;

import java.util.concurrent.TimeUnit;

import com.newland.mtype.ModuleType;
import com.newland.mtype.module.common.lcd.Color;
import com.newland.mtype.module.common.lcd.DispType;
import com.newland.mtype.module.common.lcd.FlushType;
import com.newland.mtype.module.common.lcd.FontSize;
import com.newland.mtype.module.common.lcd.LCD;
import com.newland.mtype.module.common.lcd.LCDClass;
import com.newland.mtype.module.common.lcd.LoadMenuResult;
import com.newland.mtype.module.common.lcd.Picture;
import com.newland.mtype.module.common.lcd.Point;
import com.newland.mtype.module.common.lcd.menu.MenuRoot;
import com.newland.mesdk.demo.moduleinterface.LCDInterface;
import com.newland.mesdk.demo.util.ModuleBase;

/**
 * Created by YJF LCD模块接口实现
 */
public class LCDInterfaceImpl extends ModuleBase implements LCDInterface {
	// public final static LCDInterfaceImpl INSTANCE = new LCDInterfaceImpl();
	private LCD lcd;

	public LCDInterfaceImpl() {

		lcd = (LCD) factory.getModule(ModuleType.COMMON_LCD);

	}

	// 0.液晶屏清屏。
	@Override
	public void clearScreen() {
		// lcd = (LCD)factory.getModule(ModuleType.COMMON_LCD);
		if (lcd != null) {
			lcd.clearScreen();
		}
	}

	// 1.关闭背光
	@Override
	public void disableBackgroundLight() {
		lcd.disableBackgroundLight();
	}

	// 2.画出给定图像
	@Override
	public void draw(Picture picture) {
		lcd.draw(picture);
	}

	// 3.输出字符串并在预定的时间内显示
	@Override
	public void drawWithinTime(String words, int showtime) {
		lcd.drawWithinTime(words, showtime);
	}

	// 4.启动背光
	@Override
	public void enableBackgroundLight() {
		lcd.enableBackgroundLight();
	}

	// 5.手动刷新屏幕
	@Override
	public void flush() {
		lcd.flush();
	}

	// 6.获得光标位置。
	@Override
	public Point getCursorPosition() {
		Point point = lcd.getCursorPosition();
		return point;
	}

	// 7.获得字体大小
	@Override
	public FontSize getFontSize() {
		FontSize fontSize = lcd.getFontSize();
		return fontSize;
	}

	// 8.获得液晶属性
	@Override
	public LCDClass getLCDClass() {
		LCDClass lcdClass = lcd.getLCDClass();
		return lcdClass;
	}

	// 9.启动pos预装载菜单
	@Override
	public String launchMenu(long timeout, TimeUnit timeUnit) {
		String menu = lcd.launchMenu(timeout, timeUnit);
		return menu;
	}

	// 10.装载菜单并进行mac校验
	@Override
	public LoadMenuResult loadMenu(MenuRoot menuRoot, int macIndex, byte[] macRadom, byte[] mac, long timeout, TimeUnit timeunit) {
		LoadMenuResult loadMenuResult = lcd.loadMenu(menuRoot, macIndex, macRadom, mac, timeout, timeunit);
		return loadMenuResult;
	}

	// 11.装载菜单
	@Override
	public LoadMenuResult loadMenu(MenuRoot menuRoot, long timeout, TimeUnit timeunit) {
		LoadMenuResult loadMenuResult = lcd.loadMenu(menuRoot, timeout, timeunit);
		return loadMenuResult;
	}

	// 12.设置光标位置。
	@Override
	public void setCursorPosition(Point p) {
		lcd.setCursorPosition(p);
	}

	// 13.设置显示模式。。
	@Override
	public void setDisplayType(DispType dispType) {
		lcd.setDisplayType(dispType);
	}

	// 14.设置刷新模式。。
	@Override
	public void setFlushType(FlushType flushType) {
		lcd.setFlushType(flushType);
	}

	// 15.设置通用正显字体颜色。
	@Override
	public void setNormalWordsColor(Color color) {
	}

	// 16.设置通用反显背景颜色。
	@Override
	public void setReversalBackgroundColor(Color color) {
		lcd.setReversalBackgroundColor(color);
	}

	// 17.设置通用反显字体颜色。
	@Override
	public void setReversalWordsColor(Color color) {
		try {
			lcd.setReversalWordsColor(color);
		} catch (Exception e) {
			System.out.println("设置通用反显字体颜色 异常异常信息" + e);
		}

	}
}
